#include "common.h"
#include "compare.h"


/* Funcao que compara dois jobs por (task1, task2) */
int nodeTask1cmp(const Job *a, const Job *b) {
    if (a->task1 == b->task1) {
        return (a->task2 - b->task2);
    } else {
        return (a->task1 - b->task1);
    }
}


/* Funcao que compara dois jobs por (task2, task1) */
int nodeTask2cmp(const Job *a, const Job *b) {
    if (a->task2 == b->task2) {
        return (a->task1 - b->task1);
    } else {
        return (a->task2 - b->task2);
    }
}


/* Funcao que compara dois Displays */
int dispcmp(const Disp *a, const Disp *b) {
    return (a->start - b->start);
}


/* Funcao que compara dois jobs para a primeira particao (Johnson) */
int firstSetcmp(const Job *a, const Job *b) {
    if (a->task1 == b->task1) {
        return (b->task2 - a->task2);
    } else {
        return (a->task1 - b->task1);
    }
}


/* Funcao que compara dois jobs para a segunda particao (Johnson) */
int secondSetcmp(const Job *a, const Job *b) {
    if (a->task2 == b->task2) {
        return (a->task1 - b->task1);
    } else {
        return (b->task2 - a->task2);
    }
}


/* Funcao que compara dois jobs por (task1 + task2) */
int totalTimecmp(const Job *a, const Job *b) {
    if ((a->task1 + a->task2) != (b->task1 + b->task2)) {
        return ((a->task1 + a->task2) - (b->task1 + b->task2));
    } else if (a->task1 != b->task1) {
        return (a->task1 - b->task1);
    } else {
        return (a->task2 - b->task2);
    }
}


